<?php

namespace PhpYes\Com;

class Strs
{
    /**
     * @param string[] $strs - strs 是关联数组 或者 哈希数组 或者 对象 时也是可以的 - !!! note, element will be trimed
     * @return string[] - return a new array(copied)
     */
    public static function unique_strs($strs)
    {
        if (empty($strs) || !is_array($strs)) {
            return [];
        }

        $arr = [];
        foreach ($strs as $str) {
            $str = isset($str) ? trim(strval($str)) : '';
            $arr[$str] = 1;
        }
        return array_keys($arr);
    }

    /**
     * @param string[] $strs - strs 是关联数组 或者 哈希数组 或者 对象 时也是可以的 - !!! note, element will be trimed
     * @param bool $order_desc - order_desc ? 'desc' : 'asc'
     * @return string[] - return a new array(copied) with the elements sorted
     */
    public static function sort_strs($strs, $order_desc = false)
    {
        if (empty($strs) || !is_array($strs)) {
            return [];
        }

        $arr = [];
        foreach ($strs as $str) {
            $str = isset($str) ? trim(strval($str)) : '';
            $arr[] = $str;
        }
        if (count($arr) == 1) { // arr.length == 1 时不用排序
            return $arr;
        }

        if ($order_desc) {
            rsort($arr);
        } else {
            sort($arr);
        }
        return $arr;
    }

    /**
     * @param string[] $strs - strs 是关联数组 或者 哈希数组 或者 对象 时也是可以的 - !!! note, element will be trimed
     * @param bool $order_desc - order_desc ? 'desc' : 'asc'
     * @return string[] - return a new array(copied) with the elements sorted
     */
    public static function sort_unique_strs($strs, $order_desc = false)
    {
        if (empty($strs) || !is_array($strs)) {
            return [];
        }

        $arr = [];
        foreach ($strs as $str) {
            $str = isset($str) ? trim(strval($str)) : '';
            $arr[$str] = 1;
        }
        $arr = array_keys($arr);
        if (count($arr) == 1) { // arr.length == 1 时不用排序
            return $arr;
        }

        if ($order_desc) {
            rsort($arr);
        } else {
            sort($arr);
        }
        return $arr;
    }
}